// ==========================================================================
// gin-sns自动生成控制器相关代码，只生成一次，按需修改,再次生成不会覆盖.
// date：2021-02-21 13:45:54 +0800 CST
// path: app/controller/module/rss_controller.go
// author：jon
// ==========================================================================
package module

import (
	"gin-sns/app/ginframe/response"
	"gin-sns/app/ginframe/utils/gconv"
	"gin-sns/app/model"
	rssModel "gin-sns/app/model/module/rss"
	"gin-sns/app/service/module"

	"github.com/gin-gonic/gin"
)

var RssController = newRssController()

func newRssController() *rssController {
	return &rssController{}
}

type rssController struct {
}

//列表页
func (c *rssController) List(ctx *gin.Context) {
	response.BuildTpl(ctx, "module/rss/list.html").WriteTpl()
}

//列表分页数据
func (c *rssController) ListAjax(ctx *gin.Context) {
	req := new(rssModel.SelectPageReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetMsg(err.Error()).Log("rss管理", req).WriteJsonExit()
		return
	}
	rows := make([]rssModel.Entity, 0)
	result, page, err := module.RssService.SelectListByPage(req)

	if err == nil && len(result) > 0 {
		rows = result
	}

	response.BuildTable(ctx, page.Total, rows).WriteJsonExit()
}

//新增页面
func (c *rssController) Add(ctx *gin.Context) {
	response.BuildTpl(ctx, "module/rss/add.html").WriteTpl()
}

//新增页面保存
func (c *rssController) AddSave(ctx *gin.Context) {
	req := new(rssModel.AddReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Add).SetMsg(err.Error()).Log("订阅新增数据", req).WriteJsonExit()
		return
	}

	id, err := module.RssService.AddSave(req, ctx)

	if err != nil || id <= 0 {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Add).Log("订阅新增数据", req).WriteJsonExit()
		return
	}
	response.SucessResp(ctx).SetData(id).Log("订阅新增数据", req).WriteJsonExit()
}

//修改页面
func (c *rssController) Edit(ctx *gin.Context) {
	id := gconv.Int64(ctx.Query("id"))

	if id <= 0 {
		response.ErrorTpl(ctx).WriteTpl(gin.H{
			"desc": "参数错误",
		})
		return
	}

	entity, err := module.RssService.SelectRecordById(id)

	if err != nil || entity == nil {
		response.ErrorTpl(ctx).WriteTpl(gin.H{
			"desc": "数据不存在",
		})
		return
	}

	response.BuildTpl(ctx, "module/rss/edit.html").WriteTpl(gin.H{
		"rss": entity,
	})
}

//修改页面保存
func (c *rssController) EditSave(ctx *gin.Context) {
	req := new(rssModel.EditReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Edit).SetMsg(err.Error()).Log("订阅修改数据", req).WriteJsonExit()
		return
	}

	rs, err := module.RssService.EditSave(req, ctx)

	if err != nil || rs <= 0 {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Edit).Log("订阅修改数据", req).WriteJsonExit()
		return
	}
	response.SucessResp(ctx).SetBtype(model.Buniss_Edit).Log("订阅修改数据", req).WriteJsonExit()
}

//删除数据
func (c *rssController) Remove(ctx *gin.Context) {
	req := new(model.RemoveReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Del).SetMsg(err.Error()).Log("订阅删除数据", req).WriteJsonExit()
		return
	}

	rs := module.RssService.DeleteRecordByIds(req.Ids)

	if rs > 0 {
		response.SucessResp(ctx).SetBtype(model.Buniss_Del).Log("订阅删除数据", req).WriteJsonExit()
	} else {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Del).Log("订阅删除数据", req).WriteJsonExit()
	}
}

//导出
func (c *rssController) Export(ctx *gin.Context) {
	req := new(rssModel.SelectPageReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).Log("订阅导出数据", req).WriteJsonExit()
		return
	}
	url, err := module.RssService.Export(req)

	if err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Other).Log("订阅导出数据", req).WriteJsonExit()
		return
	}
	response.SucessResp(ctx).SetBtype(model.Buniss_Other).SetMsg(url).WriteJsonExit()
}
